今天來點很多人想學 Python 做折線圖,其中一個原因是想抓取股票資訊做分析,那今天就來實作這項好了
twstock 台灣股市股票價格擷取
https://pypi.org/project/twstock/
使用 pip 進行安裝 twstock:
pip install twstock
import matplotlib.pyplot as plt
import twstock
import datetime
# 詢問使用者股票代碼
stock_code = input("請輸入將要查詢的股票代碼:")
stock = twstock.Stock(stock_code) # 建立 Stock 物件
now_date = datetime.datetime.now() # 取得查詢當下的時間
now_year = now_date.year # 取得查詢當下當年年份
# 取得查詢當下上個月月份
if(now_date.month != 1):
last_month = now_date.month - 1
else:
last_month = 12
使用語法:(查詢某年某月的股票資料)
stock.fetch(year, month)
此次需求的「查詢年/查詢時間前一個月」的股票資料:
stocklist = stock.fetch(now_year, last_month)
印出 stock.data[0],可以觀察到「close」就是收盤價的價位資料
print(stock.data[0])
因此,此次實作的 x, y 軸資料擷取如下:
listx = []
listy = []
for value in stocklist:
listx.append(value.date.strftime('%Y-%m-%d'))
listy.append(value.close)
plt.figure(figsize=(10,10)) # 設定圖表區寬高
plt.xlabel('日期', fontsize="16") # 設定 x 軸標題內容及大小
plt.ylabel('股價', fontsize="16") # 設定 y 軸標題標題內容及大小
plt.title('Taiwan Stock', fontsize="18") # 設定圖表標題內容及大小
plt.plot(listx, listy, color='red', markersize="16", marker=".") # 紅色,實線,標記大小 16,標記為「點」
plt.xticks(rotation = 45) # 讓 x 坐標軸標題旋轉 45 度
在使用時,會發現使用中文會出現方框亂碼,無法正常顯示出來,因此可以透過 Matplotlib 的 rcParams 設定中文字型檔:
# 設定讓中文可順利顯示不亂碼
plt.rcParams["font.sans-serif"] = "Microsoft JhengHei" # 將字體換成 Microsoft JhengHei
但這還不足夠,若是有負數「-」則會再度出現方框亂碼,因此還需要再多設定:
plt.rcParams["axes.unicode_minus"] = False # 讓負號可正常顯示
plt.show()
import matplotlib.pyplot as plt
import twstock
import datetime
# 詢問使用者股票代碼
stock_code = input("請輸入將要查詢的股票代碼:")
stock = twstock.Stock(stock_code) # 建立 Stock 物件
now_date = datetime.datetime.now() # 取得查詢當下的時間
now_year = now_date.year # 取得查詢當下當年年份
# 取得查詢當下上個月月份
if(now_date.month != 1):
last_month = now_date.month - 1
else:
last_month = 12
stocklist = stock.fetch(now_year, last_month)
listx = []
listy = []
for value in stocklist:
listx.append(value.date.strftime('%Y-%m-%d'))
listy.append(value.close)
plt.figure(figsize=(10,10)) # 設定圖表區寬高
plt.xlabel('日期', fontsize="16") # 設定 x 軸標題內容及大小
plt.ylabel('股價', fontsize="16") # 設定 y 軸標題標題內容及大小
plt.title('Taiwan Stock', fontsize="18") # 設定圖表標題內容及大小
plt.plot(listx, listy, color='red', markersize="16", marker=".") # 紅色,實線,標記大小 16,標記為「點」
plt.xticks(rotation = 45) # 讓 x 坐標軸標題旋轉 45 度
# 設定讓中文可順利顯示不亂碼
plt.rcParams["font.sans-serif"] = "Microsoft JhengHei" # 將字體換成 Microsoft JhengHei
plt.rcParams["axes.unicode_minus"] = False # 讓負號可正常顯示
plt.show()
這篇僅只是基礎教學,若有興趣的可以當配資料庫或其他工具做到不一樣的效果
同時,可以研究一下如何可以做到股票的量化分析或者回歸分析